#include "chartview.h"
#include <QtGui/QMouseEvent>

ChartView::ChartView(QChart *chart, QWidget *parent) :
    QChartView(chart, parent),
    m_isTouching(true)
{
    setRubberBand(QChartView::RectangleRubberBand);
}

bool ChartView::viewportEvent(QEvent *event)
{
    if (event->type() == QEvent::TouchBegin){
        m_isTouching = true;
        //关闭图表显示动画
        chart() ->setAnimationOptions(QChart::NoAnimation);
    }
    return QChartView::viewportEvent(event);
}

void ChartView::mousePressEvent(QMouseEvent *event)
 {
     if (m_isTouching)
         return;
     QChartView::mousePressEvent(event);
 }

void ChartView::mouseMoveEvent(QMouseEvent *event)
 {
     if (m_isTouching)
         return;
     QChartView::mouseMoveEvent(event);
 }

void ChartView::mouseReleaseEvent(QMouseEvent *event)
 {
     if (m_isTouching)
         m_isTouching = false;

     // Because we disabled animations when touch event was detected
     // we must put them back on.
     chart()->setAnimationOptions(QChart::SeriesAnimations);

     QChartView::mouseReleaseEvent(event);
 }

void ChartView::keyPressEvent(QKeyEvent *event)
 {
     switch (event->key()) {
     case Qt::Key_Plus:
         chart()->zoomIn();
         break;
     case Qt::Key_Minus:
         chart()->zoomOut();
         break;
     case Qt::Key_Left:
         chart()->scroll(-10, 0);
         break;
     case Qt::Key_Right:
         chart()->scroll(10, 0);
         break;
     case Qt::Key_Up:
         chart()->scroll(0, 10);
         break;
     case Qt::Key_Down:
         chart()->scroll(0, -10);
         break;
     default:
         QGraphicsView::keyPressEvent(event);
         break;
     }
}
